function class = classify(x_final, q_final, th_stable, th_period, th_unbounded)
% classify_attractor 根据轨迹判断吸引子类型
% 输入:
%   x_final, q_final: 舍弃瞬态后的轨迹（向量）
%   th_stable: 判断稳定点的标准差阈值（例如 1e-2）
%   th_period: 判断周期吸引子的最大差阈值（例如 1e-3）
%   th_unbounded: 无界判断阈值（例如 1e5）
%
% 输出:
%   class: 分类结果
%      1 - 稳定固定点
%      2 - 周期吸引子
%      3 - 混沌吸引子（有界但非周期）
%      4 - 无界

    % 1. 无界检测
    if any(abs(x_final) > th_unbounded) || any(abs(q_final) > th_unbounded)
        class = 4;  % 无界
        return;
    end
    
    % 2. 稳定固定点：若 x_final 标准差非常小
    if std(x_final) < th_stable
        class = 1;  % 稳定点
        return;
    end
    
    % 3. 周期检测：候选周期 p 从 2 到 20
    is_periodic = false;
    for p = 2:20
        if length(x_final) > p
            diff_val = max(abs(x_final(1:end-p) - x_final(p+1:end)));
            if diff_val < th_period
                is_periodic = true;
                break;
            end
        end
    end
    
    if is_periodic
        class = 2;  % 周期吸引子
    else
        class = 3;  % 混沌吸引子
    end
end

